﻿
#if UNITY_EDITOR
using UnityEngine;
using UnityEngine.UI;

// 命名空间限定为编辑器内的功能
namespace MeEditor
{
    // 需要与RectTransform组件一起使用的属性
    [RequireComponent(typeof(RectTransform))]
    // 在编辑模式下执行，以便于UI设计时实时反馈
    [ExecuteInEditMode]
    public class Decoreate : MonoBehaviour
    {
        // 精灵路径
        string spr_path = "";
        // 图像组件，用于显示精灵
        [SerializeField]
        [HideInInspector]
        private Image _image;

        // 上一次记录的位置和大小
        Vector3 _lastPos = new Vector3(-1, -1);
        Vector2 _lastSize = Vector2.zero;

        // 精灵路径的属性，设置时加载新的精灵
        public string SprPath
        {
            get { return spr_path; }
            set 
            {
                LoadSpr(value);
            }
        }

        // 加载精灵的方法
        public void LoadSpr(string path)
        {
            InitComponent();
            if (spr_path != path)
            {
                spr_path = path;
                _image.sprite = UIEditorHelper.LoadSpriteInLocal(path);
                _image.SetNativeSize();
                // gameObject.name = CommonHelper.GetFileNameByPath(path);
                // Debug.Log("_image.sprite :" + (_image.sprite != null).ToString());
            }
        }

        // 生命周期方法，初始化组件
        protected void Start()
        {
            InitComponent();
        }

        // 初始化图像组件
        protected void InitComponent()
        {
            if (_image == null)
                _image = GetComponent<Image>();
        }

        // 检查变换是否更改
        public bool IsChangedTrans()
        {
            RectTransform curTrans = transform as RectTransform;
            if (curTrans.localPosition == _lastPos && curTrans.sizeDelta == _lastSize)
                return false;
            else
                return true;
        }

        // 保存当前变换
        public void SaveTrans()
        {
            RectTransform rectTrans = transform as RectTransform;
            _lastPos = rectTrans.localPosition;
            _lastSize = rectTrans.sizeDelta;
        }

    }
}
#endif